package jfae.core.annotations;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * This annotation allow {@link EditableBean} specify
 * the presentation constraints for heach property identified
 * by his name.
 * <ul>
 * 	<li><code>{@link #name()}</code>: is the name of bean property that must associate to constraints</li>
 * 	<li><code>{@link #order()}</code>: is the same of <code>&#64;Editable(order=n)</code> {@link Editable#order()} </li>
 * 	<li><code>{@link #presentation()}</code>: see {@link Presentation} </li>
 * </ul>
 * @author bobpuley
 *
 */
@Retention(RetentionPolicy.RUNTIME)
public @interface PropPresentation {

	/**
	 * The name of the bean property that must associate to this definition
	 * @return the name of the bean property
	 */
	String name();

	/**
	 * The presentation order for specified bean property
	 * @return the order
	 */
	int order();
	
	/**
	 * Presentation constraints to be applied on bean property 
	 * @return
	 */
	Presentation presentation() default @Presentation();
	
}
